# -*- coding: utf-8 -*-
#

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Column, Integer, String, ForeignKey

from sqlalchemy.ext.declarative import declarative_base



#a base de dados e do tipo sqlite3
engine= create_engine('sqlite:///treta.db', echo=True)
Base = declarative_base()

class Naturalidade (Base):
	__tablename__= 'naturalidades'
	id = Column(Integer, primary_key=True)
	nome = Column(String)
	def __init__(self, nome):
		self.nome=nome
		
class Aluno (Base):
	__tablename__='alunos'
	id = Column(Integer, primary_key=True)
 	nome = Column(String)
 	numero = Column(Integer)
 	curso = Column(String)
 	naturalidade_id = Column(Integer, ForeignKey('naturalidades.id'))
 	nacao = relationship("Naturalidade",backref=backref('alunos',order_by=id))	
 	
	def __init__(self, nome, numero, curso, naturalidade):
		self.nome=nome
		self.numero=numero
		self.curso=curso
		self.naturalidade=naturalidade

Base.metadata.create_all(engine)		
 	
# INSERT em naturalidades
Session = sessionmaker(bind=engine)
session = Session()
portugal = Naturalidade('Portugal')
espanha = Naturalidade('Espanha')
franca=Naturalidade('Franca')
session.add(portugal)
session.add(espanha)
session.add(franca)
session.commit() 	

# INSERT into alunos
aluno1=Aluno('Tiago Bond','007', 'Espeleologia', portugal)
aluno2=Aluno('Barbara Bond','008', 'Comunicacao', espanha)
aluno3=Aluno('Manuel Bond','009', 'Filosofia', franca)
session.add(aluno1);session.add(aluno2);
session.add(aluno3)
session.commit()

#QUERYS
print "Nomes"
for obj in session.query(Aluno):
	print obj.nome.upper()
print
for obj in session.query(Aluno).filter(Aluno.nome=='Barbara Bond'):
	print "informacao sobre: "
	print "nome = ", obj.nome
	print "numero {0} e curso {1}".format(obj.numero, obj.curso.upper())
	
	
